Seaborn์ ๊ณ ๊ธ ํ๋กํ ๊ธฐ๋ฅ์ผ๋ก ์ ๊ตํ ํต๊ณ ์๊ฐํ๋ฅผ ๋ง๋ค์ด๋ณด์ธ์. ๋ฉํฐ ํจ๋ ๋์คํ๋ ์ด, ๋ณต์กํ ๋ฏธํ, ๋ฐ์ดํฐ ์คํ ๋ฆฌํ ๋ง ๊ธฐ๋ฒ์ ๋ฐฐ์ ๊ธ๋ก๋ฒ ๋ฐ์ดํฐ ๋ถ์์ ์ต์ ํํ์ธ์.
Seaborn ํต๊ณ ์๊ฐํ ๋ง์คํฐํ๊ธฐ: ๊ธ๋ก๋ฒ ๋ฐ์ดํฐ ์ธ์ฌ์ดํธ๋ฅผ ์ํ ๊ณ ๊ธ ํ๋กํ ๊ธฐ๋ฒ
๋ฐฉ๋ํ ๋ฐ์ดํฐ์ ๋ฐ๋ค์์, ๋ช ํํ๊ณ ์ค๋๋ ฅ ์๋ ์๊ฐํ๋ ์ฐ๋ฆฌ๋ฅผ ์ค์ํ ํต์ฐฐ๋ ฅ์ผ๋ก ์ด๋๋ ๋ฑ๋์ ๊ฐ์ต๋๋ค. ๊ธฐ๋ณธ์ ์ธ ํ๋กฏ์ด ๊ฒฌ๊ณ ํ ๊ธฐ์ด๋ฅผ ์ ๊ณตํ์ง๋ง, ๋ฐ์ดํฐ ์คํ ๋ฆฌํ ๋ง์ ์ง์ ํ ํ์ ์จ๊ฒจ์ง ํจํด๊ณผ ๋ณต์กํ ๊ด๊ณ๋ฅผ ๋๋ฌ๋ด๋ ์ ๊ตํ๊ณ ๋ค๊ฐ์ ์ธ ์๊ฐํ๋ฅผ ๋ง๋๋ ๋ฅ๋ ฅ์ ์์ต๋๋ค. Python ์ฌ์ฉ์์๊ฒ Seaborn์ Matplotlib์ ๊ธฐ๋ฐ์ผ๋ก ๊ตฌ์ถ๋ ํต๊ณ ๋ฐ์ดํฐ ์๊ฐํ๋ฅผ ์ํ ๋ ๋ณด์ ์ธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋๋ค. ๋ณต์กํ ํ๋กฏ ์์ฑ์ ๋จ์ํํ์ฌ ์ ์ธ๊ณ ๋ฐ์ดํฐ ์ ๋ฌธ๊ฐ๋ค์ด ๋ณต์กํ ํต๊ณ ์ ๋ณด๋ฅผ ์ฐ์ํ๊ณ ํจ์จ์ ์ผ๋ก ์ ๋ฌํ ์ ์๋๋ก ํฉ๋๋ค.
์ด ์ข ํฉ ๊ฐ์ด๋๋ Seaborn์ ์ ๋ฌธ ๊ธฐ๋ฅ์ ๋์ด ๊ณ ๊ธ ํ๋กํ ๊ธฐ๋ฅ์ ํ๊ตฌํฉ๋๋ค. ์ฐ๋ฆฌ๋ ๋ฌธํ์ ๋๋ ์ ๋ฌธ์ ๋ฐฐ๊ฒฝ์ ๊ด๊ณ์์ด ์ ์ธ๊ณ ์ฌ์ฉ์๋ฅผ ์ํด ๋ณต์กํ๊ณ ์ ์ตํ๋ฉฐ ๋ฏธํ์ ์ผ๋ก ๋ง์กฑ์ค๋ฌ์ด ์๊ฐํ๋ฅผ ๊ตฌ์ฑํ๋ ๊ธฐ์ ์ ์์๋ณผ ๊ฒ์ ๋๋ค. ๋ฐ์ดํฐ ์๊ฐํ ๊ธฐ์ ์ ํ ๋จ๊ณ ๋์ด์ฌ๋ฆฌ๊ณ ์์ ๋ฐ์ดํฐ๋ฅผ ๋ณดํธ์ ์ผ๋ก ์ดํดํ ์ ์๋ ๋ด๋ฌํฐ๋ธ๋ก ๋ณํํ ์ค๋น๋ฅผ ํ์ญ์์ค.
๊ธ๋ก๋ฒ ๋งฅ๋ฝ์์ ๊ณ ๊ธ Seaborn ์๊ฐํ๊ฐ ์ค์ํ ์ด์
๊ธ๋ก๋ฒ ๋ฐ์ดํฐ ํ๊ฒฝ์ ์์ฒญ๋ ๋ค์์ฑ๊ณผ ๋ณต์ก์ฑ์ ํน์ง์ผ๋ก ํฉ๋๋ค. ๋ฐ์ดํฐ์ ์ ์ข ์ข ์ฌ๋ฌ ์ง์ญ, ๋ฌธํ, ๊ฒฝ์ ์์คํ ๋ฐ ํ๊ฒฝ ์กฐ๊ฑด์ ํฌ๊ดํฉ๋๋ค. ์ด๋ฌํ ๋ค์ํ ๋ฐ์ดํฐ์์ ์๋ฏธ ์๋ ํต์ฐฐ๋ ฅ์ ์ถ์ถํ๊ธฐ ์ํด ํ์ค ๋ง๋ ์ฐจํธ์ ์ฐ์ ๋๋ ์ข ์ข ๋ถ์กฑํฉ๋๋ค. ๊ณ ๊ธ Seaborn ๊ธฐ์ ์ด ํ์์ ์ธ ๋ช ๊ฐ์ง ์ด์ ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค:
- ๋ค์ฐจ์์ ๊ด๊ณ ๋๋ฌ๋ด๊ธฐ: ๊ธ๋ก๋ฒ ํ์์ ๋ ๋ณ์๋ง์ผ๋ก ์ค๋ช ๋๋ ๊ฒฝ์ฐ๊ฐ ๋๋ญ ๋๋ค. ๊ณ ๊ธ ํ๋กฏ์ ์ฌ์ฉํ๋ฉด 3์ฐจ์, 4์ฐจ์ ๋๋ ๊ทธ ์ด์์ ์ฐจ์(์: ์ฌ๋ฌ ๊ตญ๊ฐ์ ๊ฑธ์น ์ธ๊ตฌ ๋ฐ๋, ๊ฒฝ์ ์ฑ์ฅ, ํ๊ฒฝ ์ํฅ, ์ ์ฑ ํจ์จ์ฑ)์ ๊ฑธ์น ์ํธ ์์ฉ์ ๋์์ ์๊ฐํํ ์ ์์ต๋๋ค.
- ๊ทธ๋ฃน ๊ฐ ๋น๊ต ๋ถ์: ๋ค์ํ ์ธ๊ตฌ ํต๊ณ ๊ทธ๋ฃน, ์ง๋ฆฌ์ ์ง์ญ ๋๋ ์์ฅ ๋ถ๋ฌธ์ด ์ด๋ป๊ฒ ํ๋ํ๋์ง ์ดํดํ๋ ค๋ฉด ํจ๊ณผ์ ์ธ ๋น๊ต ์๊ฐํ๊ฐ ํ์ํฉ๋๋ค. Seaborn์ ํจ์ฏ(faceting) ๋ฐ ๊ทธ๋ฃนํ ๊ธฐ๋ฅ์ ์ฌ๊ธฐ์ ํ์ํ๋ฉฐ, ๋ฌธํ ๊ฐ ๋น๊ต๋ฅผ ์ง๊ด์ ์ผ๋ก ๋ง๋ญ๋๋ค.
- ๋ฏธ๋ฌํจ๊ณผ ๋์์ค ์๋ณ: ๊ธ๋ก๋ฒ ๋ฐ์ดํฐ์ ์์ ์ง๊ณ๋ ๋ทฐ๋ ์ค์ํ ์ง์ญ์ ๋ณ๋์ ๊ฐ๋ฆด ์ ์์ต๋๋ค. ๊ณ ๊ธ ํ๋กฏ์ ์ด๋ฌํ ๋์์ค๋ฅผ ๋๋ฌ๋ด์ด ์๊ฐํ๊ฐ ์ง๋์น๊ฒ ์ผ๋ฐํ๋์ง ์๊ณ ๋ฐ์ดํฐ์ ์ค์ ๋ณต์ก์ฑ์ ๋ฐ์ํ๋๋ก ๋ณด์ฅํฉ๋๋ค.
- ํฅ์๋ ์คํ ๋ฆฌํ ๋ง: ์ ๋ง๋ค์ด์ง ๊ณ ๊ธ ์๊ฐํ๋ ํ๋ถํ ์ด์ผ๊ธฐ๋ฅผ ์ ๋ฌํ์ฌ ์์ฒญ์๋ฅผ ์๋ํ์ง ์์ผ๋ฉด์ ์ฌ๋ฌ ์ ๋ณด ๊ณ์ธต์ ์๋ดํ ์ ์์ต๋๋ค. ์ด๋ ๋ฐ์ดํฐ๋ ์ฃผ์ ์ ๋ํ ์น์๋ ์์ค์ด ๋ค์ํ ์ดํด๊ด๊ณ์์๊ฒ ํต์ฐฐ๋ ฅ์ ์ ์ํ๋ ๋ฐ ์ค์ํฉ๋๋ค.
- ์ ๋ฌธ์ ์ธ ํ๋ ์ ํ ์ด์ : ๊ตญ์ ๋ณด๊ณ ์, ํ์ ๋ ผ๋ฌธ ๋๋ ๋น์ฆ๋์ค ํ๋ ์ ํ ์ด์ ์์ ๊ณ ํ์ง์ ์ ๋ฌธ์ ์ธ ์๊ฐํ๋ ์ ๋ขฐ์ฑ๊ณผ ์ํฅ๋ ฅ์ ์ํด ๊ฐ์ฅ ์ค์ํฉ๋๋ค. Seaborn์ ๋ฏธ์ ์ ์ด ๊ธฐ๋ฅ์ ์ฌ์ฉํ๋ฉด ์ถํ ์ค๋น๊ฐ ๋ ๊ทธ๋ฆผ์ ๋ง๋ค ์ ์์ต๋๋ค.
๊ฐ๋จํ ๋ณต์ต: Seaborn์ ๊ธฐ๋ณธ
๊ณ ๊ธ ์ฃผ์ ๋ก ๋ค์ด๊ฐ๊ธฐ ์ ์ ๋ช ๊ฐ์ง ํต์ฌ Seaborn ๊ฐ๋ ์ ๊ฐ๋จํ ์๊ธฐํ๋ ๊ฒ์ด ์ข์ต๋๋ค:
- Figure ์์ค ํจ์ vs. Axes ์์ค ํจ์: Seaborn ํจ์๋ ํฌ๊ฒ ๋ถ๋ฅํ ์ ์์ต๋๋ค. Axes ์์ค ํจ์(์:
scatterplot,histplot)๋ ๋จ์ผ MatplotlibAxes๊ฐ์ฒด์ ํ๋กฏํฉ๋๋ค. Figure ์์ค ํจ์(์:relplot,displot,catplot,lmplot)๋ ์์ฒด MatplotlibFigure์Axes๋ฅผ ๊ด๋ฆฌํ๋ฏ๋ก ์ง์ ์ ์ธ Matplotlib ์กฐ์ ์์ด ๋ค์ค ํจ๋ ๊ทธ๋ฆผ์ ์ฝ๊ฒ ๋ง๋ค ์ ์์ต๋๋ค. - ๋ฐ์ดํฐ ์ธ์: Seaborn ํจ์๋ ์ฃผ๋ก pandas ๋ฐ์ดํฐํ๋ ์์์ ์๋ํ๋ฉฐ, ์ด ์ด๋ฆ์ ์ฌ์ฉํ์ฌ ๋ณ์๋ฅผ ์ง์ ํ๋ฏ๋ก ํ๋กํ ํ๋ก์ธ์ค๊ฐ ํฌ๊ฒ ๋จ์ํ๋ฉ๋๋ค.
- ํ
๋ง ๋ฐ ํ๋ ํธ: Seaborn์ ๋ค์ํ ๋ด์ฅ ํ
๋ง(์:
'darkgrid','whitegrid')์ ๋ค์ํ ๋ฐ์ดํฐ ์ ํ(์์ฐจ, ๋ฐ์ฐ, ๋ฒ์ฃผํ)์ ์ํด ์ค๊ณ๋ ์์ ํ๋ ํธ๋ฅผ ์ ๊ณตํ์ฌ ๋ฏธ์ ์ผ๊ด์ฑ๊ณผ ์ง๊ฐ์ ์ ํ์ฑ์ ๋ณด์ฅํฉ๋๋ค.
๊ณ ๊ธ ๊ด๊ณํ ํ๋กฏ: ๋ณต์กํ ์ฐ๊ฒฐ ๊ด๊ณ ๋ฐํ๊ธฐ
๊ด๊ณํ ํ๋กฏ์ ๋ ์์น ๋ณ์ ๊ฐ์ ๊ด๊ณ๋ฅผ ์๊ฐํํฉ๋๋ค. scatterplot๊ณผ lineplot์ด ๊ธฐ๋ณธ์ ์ด์ง๋ง, ์ด๋ค์ Figure ์์ค ๋์ ํจ์์ธ relplot์ ๋ณต์กํ ๊ธ๋ก๋ฒ ๋ฐ์ดํฐ์
์ ๋ถ์ํ๋ ๋ฐ ํ์์ ์ธ ๊ฐ๋ ฅํ ํจ์ฏ(faceting) ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค.
1. seaborn.relplot์ ๋ค์ฌ๋ค๋ฅํจ
relplot์ ๊ด๊ณํ ํ๋กฏ์ FacetGrid์ ๊ทธ๋ฆฌ๊ธฐ ์ํ Figure ์์ค ์ธํฐํ์ด์ค์
๋๋ค. ์ด๋ฅผ ํตํด ๋ฐ์ดํฐ์ ์ฌ๋ฌ ํ์ ์งํฉ ๋ด์์ ๋ค์ํ ๊ด๊ณ๋ฅผ ์๊ฐํํ ์ ์์ด ์ง์ญ, ์ธ๊ตฌ ํต๊ณ ๋๋ ๊ธฐ๊ฐ์ ๊ฑธ์น ๋น๊ต ๋ถ์์ ์ด์์ ์
๋๋ค.
kind๋งค๊ฐ๋ณ์:'scatter'(๊ธฐ๋ณธ๊ฐ)์'line'์ค์์ ์ ํํ์ฌ ๋ค์ํ ์ ํ์ ๊ด๊ณ๋ฅผ ๋ํ๋ ๋๋ค. ์๋ฅผ ๋ค์ด, ์ฌ๋ฌ ๊ฐ๋ฐ๋์๊ตญ์ ์๊ฐ์ ๋ฐ๋ฅธ ํด์ธ ์ง์ ํฌ์(FDI) ์ถ์ธ์ ํด๋น ๊ตญ๊ฐ๋ค์ GDP์ ๊ต์ก ์ง์ถ ๊ฐ์ ์๊ด๊ด๊ณ๋ฅผ ๋น๊ตํ ์ ์์ต๋๋ค.col,row,col_wrap์ ์ด์ฉํ ํจ์ฏ: ์ด ๋งค๊ฐ๋ณ์๋ค์ ์ค๋ชฐ ๋ฉํฐํ(small multiples), ์ฆ ํ๋กฏ์ ๊ทธ๋ฆฌ๋๋ฅผ ๋ง๋๋ ๋ฐ ๊ฐ์ฅ ์ค์ํฉ๋๋ค. ๊ตญ๊ฐ์ ์ธ๊ฐ ๊ฐ๋ฐ ์ง์(HDI)์ ํ์ ๋ฐฐ์ถ๋ ๊ฐ์ ๊ด๊ณ๋ฅผ ๋๋ฅ(col='Continent')๊ณผ ์๋ ๊ทธ๋ฃน(row='Income_Group')๋ณ๋ก ํจ์ฏํ์ฌ ์๊ฐํํ๋ค๊ณ ์์ํด ๋ณด์ญ์์ค.col_wrap์ ์ด์ด ๋ฌดํ์ ๊ธธ์ด์ง๋ ๊ฒ์ ๋ฐฉ์งํ์ฌ ๊ทธ๋ฆฌ๋๋ฅผ ๋ ์ฝ๊ธฐ ์ฝ๊ฒ ๋ง๋ญ๋๋ค.- ์๋ฏธ๋ก ์ ๋งคํ(
hue,size,style): ๊ธฐ๋ณธ์ ์ธ X, Y์ถ ์ธ์๋relplot์ ์ถ๊ฐ ๋ณ์๋ฅผ ์๊ฐ์ ์์ฑ์ ๋งคํํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด, ๊ธฐ๋ ์๋ช ๋ ์๋ฃ๋น ์ง์ถ์ ๋ณด์ฌ์ฃผ๋ ์ฐ์ ๋์์hue๋ ์ ์น ์ฒด์ ๋ฅผ,size๋ ์ธ๊ตฌ๋ฅผ,style์ ์๋ฃ ์์คํ ์ ํ(๊ณต๊ณต, ๋ฏผ๊ฐ, ํผํฉ)์ ๊ตฌ๋ณํ ์ ์์ต๋๋ค. ์ด๋ฌํ ์ถ๊ฐ ์ฐจ์์ ๋ ๊น์ ๊ธ๋ก๋ฒ ํต์ฐฐ๋ ฅ์ ์ป๋ ๋ฐ ์ค์ํฉ๋๋ค. - ๊ฐ๋ณ ํ๋กฏ ์ฌ์ฉ์ ์ ์:
scatterplot๊ณผlineplot์์ ์ฌ์ฉํ ์ ์๋ ๋ชจ๋ ๋งค๊ฐ๋ณ์(ํฌ๋ช ๋๋ฅผ ์ํalpha,markers, ์ ์ ์ํdashes, ์ ๋ขฐ ๊ตฌ๊ฐ์ ์ํerrorbar๋ฑ)๋ฅผrelplot์ ํตํด ์ ๋ฌํ ์ ์์ด ๊ฐ ํจ๋์ ์ธ๋ฐํ๊ฒ ์ ์ดํ ์ ์์ต๋๋ค.
2. ๊ณ ๊ธ seaborn.scatterplot ๊ธฐ๋ฒ
๋จ์ํ๊ฒ ์ฌ์ฉ๋๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ง๋ง, scatterplot์ ๋ฏธ๋ฌํ ๋ฐ์ดํฐ ํํ์ ์ํ ๊ณ ๊ธ ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค:
- ๋ง์ปค์ ์์ ์ฌ์ฉ์ ์ ์: ๊ธฐ๋ณธ ์ํ ์ธ์๋
style๋งค๊ฐ๋ณ์์ Matplotlib ๋ง์ปค ์คํ์ผ ๋ชฉ๋ก์ ์ฌ์ฉํ๊ฑฐ๋,hue์ ์ฌ์ฉ์ ์ ์ ์์ ํ๋ ํธ๋ฅผ ์ฌ์ฉํ์ฌ ๋ค์ํ ๋ฒ์ฃผ(์: ์ฌ๋ฌ ๊ตญ๊ฐ์ ๋ค์ํ ๋์ฐ๋ฌผ ์์ถ ์ ํ)๋ฅผ ๋ช ํํ๊ฒ ํํํ ์ ์์ต๋๋ค. - ํฌ๋ช
๋ ์กฐ์ (
alpha): ๋ฐ์ง๋ ์ฐ์ ๋์์ ์ค๋ฒํ๋กํ ์ ์ฒ๋ฆฌํ๋ ๋ฐ ํ์์ ์ด๋ฉฐ, ํนํ ๋๊ท๋ชจ ๊ธ๋ก๋ฒ ๋ฐ์ดํฐ์ ์์ ํํฉ๋๋ค.alpha๋ฅผ ์กฐ์ ํ๋ฉด ๊ธฐ๋ณธ ๋ฐ์ดํฐ ๋ฐ๋๋ฅผ ๋๋ฌ๋ด๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค. - ๋ช
์์ ํฌ๊ธฐ ๋งคํ:
sizes๋งค๊ฐ๋ณ์๋size์ ํจ๊ป ์ฌ์ฉํ ๋ ๋ง์ปค ํฌ๊ธฐ ๋ฒ์๋ฅผ ํํ(์ต์, ์ต๋)๋ก ์ง์ ํ๊ฑฐ๋, ํน์ ๋ฐ์ดํฐ ๊ฐ์ ์ ํํ ํฌ๊ธฐ์ ๋งคํํ๋ ์ฌ์ ์ ์ฌ์ฉํ ์ ์์ต๋๋ค. ์ด๋ GDP๋ ์ธ๊ตฌ์ ๊ฐ์ ์์ ์ ํํ๊ฒ ํํํ๋ ๋ฐ ๊ฐ๋ ฅํฉ๋๋ค. - ๋ฒ๋ก ์ ์ด: ์ฌ๋ฌ ์๋ฏธ๋ก ์ ๋งคํ์ด ์๋ ํ๋กฏ์ ๊ฒฝ์ฐ, ์ ํํ ๋ฒ๋ก ๋ฐฐ์น(์:
legend='full'๋๋legend=False๋ฅผ Matplotlib์plt.legend()์ ๊ฒฐํฉํ์ฌ ์๋ ์ ์ด)๋ ๋ค์ํ ์ฌ์ฉ์์๊ฒ ๋ช ํ์ฑ์ ๋ณด์ฅํฉ๋๋ค.
3. ์ ๊ตํ seaborn.lineplot ์ ์ฉ
lineplot์ ์๊ณ์ด๊ณผ ๊ฐ์ ์์ ์๋ ๋ฐ์ดํฐ์ ์ถ์ธ๋ฅผ ๋ณด์ฌ์ฃผ๋ ๋ฐ ํ์ํ๋ฉฐ, ๊ธ๋ก๋ฒ ๊ฒฝ์ ๋๋ ํ๊ฒฝ ๋ถ์์์ ๊ณ ๊ธ ์ฌ์ฉ ์ฌ๋ก๊ฐ ์ผ๋ฐ์ ์
๋๋ค.
- ๋ค์ค ๊ด์ธก์น ์ฒ๋ฆฌ(
estimator,errorbar): X ๊ฐ๋น ์ฌ๋ฌ ๊ด์ธก์น๊ฐ ์๋ ๊ฒฝ์ฐ(์: ์ฌ๋ฌ ์ ํ ๋ผ์ธ์ ์ฐ๊ฐ ์๋ณ ํ๋งค๋),lineplot์estimator(๊ธฐ๋ณธ๊ฐ ํ๊ท )๋ฅผ ์ฌ์ฉํ์ฌ ์ด๋ฅผ ์ง๊ณํ๊ณ ์ ๋ขฐ ๊ตฌ๊ฐ(errorbar='sd'๋๋errorbar=('ci', 95))์ ํ์ํ ์ ์์ต๋๋ค. ์ด๋ ์ฌ๋ฌ ์ง์ญ์ด๋ ์์ฅ์ ๊ฑธ์ณ ๋ถํ์ค์ฑ์ ๋๋ฐํ ํ๊ท ์ถ์ธ๋ฅผ ๋ณด์ฌ์ฃผ๋ ๋ฐ ๋งค์ฐ ์ค์ํฉ๋๋ค. units๋ฅผ ์ด์ฉํ ๊ทธ๋ฃนํ:units๋งค๊ฐ๋ณ์๋ ๊ฐ๋ณ ๊ฐ์ฒด์ ๋ํด ๋ณ๋์ ์ ์ ๊ทธ๋ฆฌ๊ณ ์ถ์ง๋ง, ์ด ๊ฐ์ฒด๋ค์ ์์, ํฌ๊ธฐ ๋๋ ์คํ์ผ๋ก ๊ตฌ๋ณํ๊ณ ์ถ์ง ์์ ๋ ์ค์ํฉ๋๋ค. ์๋ฅผ ๋ค์ด, ์์ญ ๋ ์ ๊ฑธ์น ํ๊ท ๊ธฐ์จ ์ถ์ธ๋ฅผ ํ๋กํ ํ๊ณ , ๊ฐ ์ญ๋ ๋ด์์ ๊ฐ๋ณ ๊ตญ๊ฐ์ ์ ์ ์ฃผ ๋ฒ๋ก์ ํฌํจ์ํค์ง ์๊ณ ํ๋กํ ํ ์ ์์ต๋๋ค.- ์ ๊ณผ ๋ง์ปค ์คํ์ผ๋ง: ์ ์คํ์ผ(
linestyle), ๋ง์ปค ์คํ์ผ(marker), ๋ง์ปค ํฌ๊ธฐ(markersize)๋ฅผ ์ฌ์ฉ์ ์ ์ํ์ฌ ์ ํฅ ๊ฒฝ์ ๊ตญ์ ๋ค์ํ ์ฐ์ ์ฑ์ฅ ๊ถค์ ๊ณผ ๊ฐ์ ๋ณต์กํ ์๊ณ์ด์ ๊ตฌ๋ณํ ์ ์์ต๋๋ค.
๊ณ ๊ธ ๋ฒ์ฃผํ ํ๋กฏ: ๊ทธ๋ฃน ๊ฐ ๋ถํฌ ๋น๊ต
๋ฒ์ฃผํ ํ๋กฏ์ ์ฌ๋ฌ ๋ฒ์ฃผ์ ๊ฑธ์ณ ๋ถํฌ๋ ํต๊ณ๋ฅผ ๋น๊ตํ๋ ๋ฐ ๊ธฐ๋ณธ์ ์
๋๋ค. Seaborn์ ์ด๋ฌํ ํ๋กฏ์ ํ๋ถํ ์ธํธ๋ฅผ ์ ๊ณตํ๋ฉฐ, catplot์ ํจ์ฏ์ ์ํ ๊ณ ์์ค ์ธํฐํ์ด์ค ์ญํ ์ ํฉ๋๋ค.
1. seaborn.catplot์ ํ
relplot๊ณผ ์ ์ฌํ๊ฒ, catplot์ ๋ฒ์ฃผํ ํ๋กฏ์ ๊ทธ๋ฆฌ๋ ์์ฑ์ ์ฉ์ดํ๊ฒ ํ์ฌ, ๊ธ๋ก๋ฒ ๋ฐ์ดํฐ์
์ ์ฌ๋ฌ ๊ณ์ธต์ ๊ฑธ์ณ ๋ฒ์ฃผํ ๋ฐ์ดํฐ๋ฅผ ๋น๊ตํ๋ ๋ฐ ํ์์ ์
๋๋ค.
kind๋งค๊ฐ๋ณ์: ๋ค์ํ ๋ฒ์ฃผํ ํ๋กฏ ์ ํ('strip','swarm','box','violin','boxen','point','bar','count') ๊ฐ์ ์ ํํ ์ ์์ต๋๋ค. ์ด๋ฅผ ํตํด ์ฌ๋ฌ ํจ์ฏ์ ๊ฑธ์ณ ๋ฒ์ฃผํ ๋ฐ์ดํฐ์ ๋ค์ํ ํํ์ ์ ์ํ๊ฒ ํ์ํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด, ์ฌ๋ฌ ์ฐ๋ น ๊ทธ๋ฃน(x์ถ)์ ๊ฑธ์น ์๋ ๋ถํฌ(kind='violin')๋ฅผ ๋๋ฅ๋ณ(col='Continent')๋ก ํจ์ฏํ์ฌ ๋น๊ตํ ์ ์์ต๋๋ค.col,row,col_wrap์ ์ด์ฉํ ํจ์ฏ: ์ด๋ค์relplot๊ณผ ๋์ผํ๊ฒ ์ฌ์ฉ๋์ด ๊ฐ๋ ฅํ ๋ค์ค ํจ๋ ๋น๊ต๋ฅผ ๊ฐ๋ฅํ๊ฒ ํฉ๋๋ค. ์ฌ๋ฌ ๊ต์ก ์์ค(x์ถ)์ ๊ฑธ์น ์ธํฐ๋ท ๋ณด๊ธ๋ฅ (y์ถ) ๋ถํฌ๋ฅผ ๊ฒฝ์ ๋ฐ์ ๋จ๊ณ(row='Development_Tier')์ ์ง์ญ(col='Region')๋ณ๋ก ํจ์ฏํ์ฌ ์๊ฐํํ๋ค๊ณ ์์ํด ๋ณด์ญ์์ค.- ์๋ฏธ๋ก ์ ๋งคํ(
hue):hue๋ฅผ ์ฌ์ฉํ์ฌ ๊ฐ ํ๋กฏ์ ๋ ๋ค๋ฅธ ๋ฒ์ฃผํ ์ฐจ์์ ์ถ๊ฐํฉ๋๋ค. ์๋ฅผ ๋ค์ด, ๊ตํต์๋จ๋ณ ํ๊ท ์ผ์ผ ํต๊ทผ ์๊ฐ์ ๋ณด์ฌ์ฃผ๋ ๋ง๋ ํ๋กฏ์์hue๋ ๊ฐ ํจ์ฏ ๋ด์ ๋์ ์ธ๊ตฌ์ ๋์ด ์ธ๊ตฌ๋ฅผ ๊ตฌ๋ณํ ์ ์์ต๋๋ค. - ์์ ๋ฐ ๋ฐฉํฅ:
order๋งค๊ฐ๋ณ์๋ฅผ ์ฌ์ฉํ์ฌ ์ถ์ ๋ฒ์ฃผํ ์์ค ์์๋ฅผ ์ ์ดํ๊ณ ,orient๋ก ์์ง ๋ฐ ์ํ ๋ฐฉํฅ์ ์ ํํ์ฌ ํนํ ๋ง์ ๋ฒ์ฃผ๋ ๊ธด ๋ ์ด๋ธ์ด ์๋ ๊ฒฝ์ฐ ๊ฐ๋ ์ฑ์ ํฅ์์ํฌ ์ ์์ต๋๋ค.
2. ๋ ํ๋ถํ ํต์ฐฐ๋ ฅ์ ์ํ ํ๋กฏ ๊ฒฐํฉ
์ข ์ข ๊ฐ์ฅ ํต์ฐฐ๋ ฅ ์๋ ์๊ฐํ๋ ์ฌ๋ฌ ํ๋กฏ ์ ํ์ ์์๋ฅผ ๊ฒฐํฉํฉ๋๋ค. Seaborn์ ๋์ผํ ์ถ์ ํ๋กฏ์ ๊ฒน์ณ์ ์ด๋ฅผ ์ฉ์ดํ๊ฒ ํฉ๋๋ค.
boxplot+swarmplot/stripplot: ์ผ๋ฐ์ ์ด๊ณ ๊ฐ๋ ฅํ ์กฐํฉ์ ๋๋ค.boxplot์ ๋ถํฌ(์ค์๊ฐ, ์ฌ๋ถ์์)๋ฅผ ์์ฝํ๊ณ ,swarmplot๋๋stripplot์ ๊ฐ๋ณ ๋ฐ์ดํฐ ํฌ์ธํธ๋ฅผ ๊ฒน์ณ์ ๋ฐ๋์ ๋ถํฌ๋ฅผ ๋ ์ ํํ๊ฒ ๋ณด์ฌ์ค๋๋ค. ์ด๋ ํนํ ํ๋ณธ ํฌ๊ธฐ๊ฐ ์๊ฑฐ๋, ๋ค๋ฅธ ํ๊ต ์์คํ ๋ด์ ๊ฐ๋ณ ํ์ ์ ์์ ๊ฐ์ด ๋ ํฐ ๋งฅ๋ฝ์์ ๊ฐ๋ณ ๋ฐ์ดํฐ ํฌ์ธํธ๋ฅผ ์ค๋ช ํ ๋ ์ ์ฉํฉ๋๋ค.violinplot+boxplot(inner='box'):violinplot์ ์ ์ฒด ๋ถํฌ ๋ชจ์์ ๋ณด์ฌ์ฃผ๊ณ ,inner='box'๋ก ์ค์ ํ๋ฉด ๊ฐ ๋ฐ์ด์ฌ๋ฆฐ ๋ด๋ถ์ ์์ ๋ฐ์คํ๋กฏ์ ์๋์ผ๋ก ๊ทธ๋ ค ๋ถํฌ ๋ชจ์๊ณผ ์์ฝ ํต๊ณ๋ฅผ ํ๋์ ์ฐ์ํ ํ๋กฏ์ ๋ชจ๋ ์ ๊ณตํฉ๋๋ค. ์ด๋ ์ ์ธ๊ณ์ ์ผ๋ก ์ฌ๋ฌ ์๋ฃ ๋ชจ๋ธ์ ๊ฑธ์ณ 1์ธ๋น ์๋ฃ๋น ์ง์ถ ๋ถํฌ๋ฅผ ๋น๊ตํ๋ ๋ฐ ํ์ํฉ๋๋ค.
3. ๋ฒ์ฃผํ ํ๋กฏ์ ๊ณ ๊ธ ์ฌ์ฉ์ ์ ์
boxplot๋ฐboxenplot: ์์ผ(whisker) ์ ์(whis), ํ๊ท ํ์๊ธฐ(showmeans=True,meanprops) ๋ฐ ์ด์์น ํํ์ ์ฌ์ฉ์ ์ ์ํฉ๋๋ค.boxenplot(๋ ํฐ ๋ฐธ๋ฅ ํ๋กฏ์ด๋ผ๊ณ ๋ ํจ)์ "๊ผฌ๋ฆฌ" ๋ถ๋ถ์ ์ ๋ถํฌ์ ๋ํ ๋ ์์ธํ ์ ๋ณด๋ฅผ ์ ๊ณตํ๋ ํฅ์๋ ๋ฐ์คํ๋กฏ์ผ๋ก, ์ ํต์ ์ธ ๋ฐ์คํ๋กฏ์ด ์ง๋์น๊ฒ ๋จ์ํํ ์ ์๋ ๋งค์ฐ ํฐ ๋ฐ์ดํฐ์ ์ ํนํ ์ ์ฉํฉ๋๋ค.violinplot:inner='box'์ธ์๋inner='quartile',inner='stick'(๊ฐ๋ณ ๊ด์ธก์น ํ์), ๋๋inner=None์ ํ์ํด ๋ณด์ธ์.scale๋งค๊ฐ๋ณ์('area','count','width')๋ ๋ฐ์ด์ฌ๋ฆฐ์ ๋๋น๊ฐ ๊ด์ธก์น ์ ๋๋ ๋ฐ๋์ ์ด๋ป๊ฒ ๋์ํ๋์ง๋ฅผ ์ ์ดํ๋ฉฐ, ํ๋ณธ ํฌ๊ธฐ๊ฐ ๋ค๋ฅธ ๊ทธ๋ฃน ๊ฐ์ ๋ถํฌ๋ฅผ ์ ํํ๊ฒ ๋น๊ตํ๋ ๋ฐ ์ค์ํฉ๋๋ค.barplot: ์ค์ฐจ ๋ง๋(errorbar)๋ฅผ ์ฌ์ฉ์ ์ ์ํ์ฌ ํ์ค ํธ์ฐจ, ์ ๋ขฐ ๊ตฌ๊ฐ ๋๋ ๊ธฐํ ์ธก์ ํญ๋ชฉ์ ํ์ํฉ๋๋ค.estimator๋งค๊ฐ๋ณ์(๊ธฐ๋ณธ๊ฐ'mean')๋'median'๋๋ ์ฌ์ฉ์ ์ ์ ํจ์๋ก ๋ณ๊ฒฝํ ์ ์์ด, ์๋ฅผ ๋ค์ด ์ฌ๋ฌ ๊ธ๋ก๋ฒ ๋์์ ์ค๊ฐ ์๋์ ๋น๊ตํ๋ ๋ฑ ํ๋กํ ์ ๋ฐ์ดํฐ์ ์ ์ฐํ ์ง๊ณ๋ฅผ ํ์ฉํฉ๋๋ค.
๊ณ ๊ธ ๋ถํฌ ํ๋กฏ: ๋ฐ์ดํฐ ํํ์ ํ๋ฅ ์๊ฐํ
๋ถํฌ ํ๋กฏ์ ๋จ์ผ ๋ณ์์ ํํ์ ํน์ฑ ๋๋ ๋ ๋ณ์์ ๊ฒฐํฉ ๋ถํฌ๋ฅผ ์ดํดํ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค. Seaborn์ displot์ ์ด ๋ฒ์ฃผ๋ฅผ ์ํ Figure ์์ค ์ธํฐํ์ด์ค ์ญํ ์ ํฉ๋๋ค.
1. ์ข
ํฉ์ ์ธ ๋ถํฌ ๋ถ์์ ์ํ seaborn.displot
displot์ ๋ค์ํ ๋ถํฌ ํ๋กฏ ์์ฑ์ ๊ฐ์ํํ๋ฉฐ, ํนํ ์ฌ๋ฌ ๊ธ๋ก๋ฒ ๋ถ๋ฌธ์ ๊ฑธ์ณ ๋ฐ์ดํฐ๊ฐ ์ด๋ป๊ฒ ๋ถํฌ๋์ด ์๋์ง ๊ฒํ ํ๋ ๋ฐ ์ ์ฉํฉ๋๋ค.
kind๋งค๊ฐ๋ณ์:'hist'(ํ์คํ ๊ทธ๋จ),'kde'(์ปค๋ ๋ฐ๋ ์ถ์ ),'ecdf'(๊ฒฝํ์ ๋์ ๋ถํฌ ํจ์) ์ค์์ ์ ํํฉ๋๋ค. ์๋ฅผ ๋ค์ด, ์ฌ๋ฌ ๋๋ฅ(col='Continent')์ ๊ฑธ์น ์๋ ๋ถํฌ(kind='hist')๋ฅผ ๋น๊ตํ ์ ์์ต๋๋ค.col,row,col_wrap์ ์ด์ฉํ ํจ์ฏ: ๋ค์ ํ๋ฒ, ์ด๋ค์ ๋ถํฌ ํ๋กฏ์ ๊ทธ๋ฆฌ๋๋ฅผ ๋ง๋๋ ๊ฒ์ ๊ฐ๋ฅํ๊ฒ ํฉ๋๋ค. ๋จ์ฑ๊ณผ ์ฌ์ฑ(hue='Gender')์ ๊ต์ก ์ฑ์ทจ๋ ๋ถํฌ(kind='kde')๋ฅผ ๊ตญ๊ฐ ๊ทธ๋ฃน๋ณ(col='Country_Group')๋ก ํจ์ฏํ์ฌ ์๊ฐํํฉ๋๋ค.rugplot์ถ๊ฐ: ์ฐ์ ๋ณ์์ ๊ฒฝ์ฐ,displot๋ด์์rug=True๋ฅผ ์ค์ ํ๊ฑฐ๋(๋๋rugplot์ ์ง์ ์ฌ์ฉํ์ฌ) X์ถ์ ๋ฐ๋ผ ๊ฐ ๋ฐ์ดํฐ ์ง์ ์ ์์ ์์ง์ ์ ์ถ๊ฐํ์ฌ ๊ฐ๋ณ ๊ด์ธก์น๋ฅผ ์๊ฐ์ ์ผ๋ก ํํํ๊ณ ๋ฐ์ดํฐ ์ง์ค ๋๋ ํฌ์ ์์ญ์ ๋๋ฌ๋ ๋๋ค.
2. ์ ๊ตํ seaborn.histplot ๊ธฐ๋ฒ
histplot์ ์ปค๋ ๋ฐ๋ ์ถ์ ๋ฐ ์ง์ ๋ ๋ถํฌ ํผํ
๋ ์ง์ํ๋ ์ ์ฐํ ํ์คํ ๊ทธ๋จ ํจ์์
๋๋ค.
- ๊ตฌ๊ฐ(Bin) ์ฌ์ฉ์ ์ ์:
bins๋๋binwidth๋ฅผ ์ฌ์ฉํ์ฌ ๊ตฌ๊ฐ์ ์๋ ๋๋น๋ฅผ ์ ์ดํฉ๋๋ค. ์๋ฅผ ๋ค์ด, ํน์ ๊ตฌ๊ฐ ๊ฒฝ๊ณ๋ฅผ ์ฌ์ฉํ์ฌ ๊ธฐํ ๋ณํ ์ํฅ ์ ์ ๋ถํฌ๋ฅผ ๋ถ์ํ ์ ์์ต๋๋ค. stat๋งค๊ฐ๋ณ์:stat๋งค๊ฐ๋ณ์('count','frequency','density','probability')๋ ํ์คํ ๊ทธ๋จ ๋ง๋๋ฅผ ์ ๊ทํํ์ฌ ์ด ๊ฐ์๊ฐ ๋ค๋ฅธ ๋ถํฌ๋ฅผ ๋น๊ตํ๊ธฐ ์ฝ๊ฒ ๋ง๋ญ๋๋ค. ์๋ฅผ ๋ค์ด, ํ๋ณธ ํฌ๊ธฐ๊ฐ ๋ค๋ฅธ ๊ตญ๊ฐ์ ์ค๋ฌธ ์๋ต ๋ถํฌ๋ฅผ ๋น๊ตํ ์ ์์ต๋๋ค.- ๋ค์ค ํ์คํ ๊ทธ๋จ(
multiple):hue๋ฅผ ์ฌ์ฉํ ๋multiple='stack'์ ํ์คํ ๊ทธ๋จ์ ์๊ณ ,multiple='dodge'๋ ๋๋ํ ๋ฐฐ์นํ๋ฉฐ,multiple='layer'(๊ธฐ๋ณธ๊ฐ)๋ ํฌ๋ช ํ๊ฒ ๊ฒน์นฉ๋๋ค.multiple='fill'์ ๊ฐ ๊ตฌ๊ฐ์ 1๋ก ์ ๊ทํํ์ฌ ๊ฐ ์์กฐ ๋ฒ์ฃผ์ ๋น์จ์ ๋ณด์ฌ์ฃผ๋ฏ๋ก, ์ฌ๋ฌ ์ง์ญ์ ์ฐ๋ น ์ธ๊ตฌ ํต๊ณ์ ๊ฐ์ด ์ฌ๋ฌ ๋ฒ์ฃผ์ ๊ฑธ์น ๋น๋ก ๊ตฌ์ฑ์ ๋น๊ตํ๋ ๋ฐ ํ์ํฉ๋๋ค. - KDE ๋๋ ์ ๊ท ๋ถํฌ ์ถ๊ฐ:
kde=True๋ฅผ ์ค์ ํ์ฌ ์ปค๋ ๋ฐ๋ ์ถ์ ์น๋ฅผ ๊ฒน์น๊ฑฐ๋,stat='density'์fill=True๋ฅผkde=True์ ํจ๊ป ์ฌ์ฉํฉ๋๋ค. ๊ฐ์ค ๊ฒ์ ์ ์ํดfit=scipy.stats.norm์ผ๋ก ์ด๋ก ์ ๋ถํฌ๋ฅผ ํผํ ํ ์๋ ์์ต๋๋ค.
3. ๊ณ ๊ธ seaborn.kdeplot ์ ์ฉ
kdeplot์ ํ๋ฅ ๋ฐ๋ ํจ์๋ฅผ ์ถ์ ํ๊ณ ํ๋กํ
ํ์ฌ ๋ฐ์ดํฐ ๋ถํฌ์ ๋ถ๋๋ฌ์ด ํํ์ ์ ๊ณตํฉ๋๋ค.
- ์ฑ์ฐ๊ธฐ ๋ฐ ๋ ๋ฒจ: ๋จ๋ณ๋ KDE์ ๊ฒฝ์ฐ
fill=True๋ ๊ณก์ ์๋ ์์ญ์ ์ฑ์ํฉ๋๋ค. ์ด๋ณ๋ KDE(x๋ฐy๋ณ์)์ ๊ฒฝ์ฐfill=True๋ ๋ฑ๊ณ ์ ์ ์ฑ์ฐ๊ณ ,levels๋ ๋ฑ๊ณ ์ ์ ์์ ์์น๋ฅผ ์ ์ดํฉ๋๋ค. ์ด๋ ๋ฌธํด์จ๊ณผ 1์ธ๋น ์๋๊ณผ ๊ฐ์ ๋ ๋ณ์์ ๊ฒฐํฉ ๋ฐ๋๋ฅผ ์๊ฐํํ๋ ๋ฐ ๊ฐ๋ ฅํฉ๋๋ค. - ์ปฌ๋ฌ ๋งต ๋ฐ ์ปฌ๋ฌ ๋ฐ(
cmap,cbar): ์ด๋ณ๋ KDE์fill=True๋ฅผ ํจ๊ป ์ฌ์ฉํ ๋, ๋ฑ๊ณ ์ ์์์ ์ํดcmap(์ปฌ๋ฌ ๋งต)์ ์ง์ ํ๊ณcbar=True๋ฅผ ์ฌ์ฉํ์ฌ ์ปฌ๋ฌ ๋ฐ๋ฅผ ์ถ๊ฐํ๋ฉด ๋ฐ๋ ์์ค์ ๋ช ์์ ์ผ๋ก ๋ง๋ค ์ ์์ต๋๋ค. cut๋งค๊ฐ๋ณ์: ๊ทน๋จ์ ์ธ ๋ฐ์ดํฐ ํฌ์ธํธ๋ฅผ ๋์ด ํ๊ฐ ๊ทธ๋ฆฌ๋๋ฅผ ํ์ฅํ์ฌ KDE ๊ผฌ๋ฆฌ๊ฐ ์์ ํ ๊ทธ๋ ค์ง๋๋ก ๋ณด์ฅํฉ๋๋ค.- ๋ค์ค KDE(
hue):hue๋ฅผ ์ฌ์ฉํ๋ฉดkdeplot์ ์ฌ๋ฌ KDE๋ฅผ ํ๋กํ ํ ์ ์์ผ๋ฉฐ, ํฌ๋ช ํ๊ฒ ๊ฒน์น๊ฑฐ๋ ์์์ ์ฌ๋ฌ ๊ทธ๋ฃน ๊ฐ์ ๋ถํฌ ๋ชจ์์ ์ง์ ๋น๊ตํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด, ์ ์ง๊ตญ ๋ ๊ฐ๋ฐ๋์๊ตญ์ CO2 ๋ฐฐ์ถ๋ ๋ถํฌ๋ฅผ ๋น๊ตํ ์ ์์ต๋๋ค.
๊ณ ๊ธ ํ๊ท ํ๋กฏ: ์ ๋ขฐ๋๋ฅผ ๊ฐ์ถ ๊ด๊ณ ๋ชจ๋ธ๋ง
ํ๊ท ํ๋กฏ์ ๋ ๋ณ์ ๊ฐ์ ๊ด๊ณ๋ฅผ ์๊ฐํํ๋ฉด์ ํ๊ท ๋ชจ๋ธ์ ํผํ
ํฉ๋๋ค. Seaborn์ ์ด๋ฅผ ์ํด lmplot(Figure ์์ค)๊ณผ regplot(Axes ์์ค)์ ์ ๊ณตํฉ๋๋ค.
1. seaborn.lmplot์ ๊น์ด
lmplot์ FacetGrid๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๊ตฌ์ถ๋์ด ๋ฐ์ดํฐ์ ์ฌ๋ฌ ํ์ ์งํฉ์ ๋ํ ํ๊ท์ ๊ณผ ์ฐ์ ๋๋ฅผ ํ๋กํ
ํ ์ ์์ผ๋ฏ๋ก, ์ฌ๋ฌ ๊ธ๋ก๋ฒ ๋งฅ๋ฝ์์ ์ ํ ๊ด๊ณ๋ฅผ ๋น๊ตํ๋ ๋ฐ ์ด์์ ์
๋๋ค.
col,row,hue๋ฅผ ์ด์ฉํ ํจ์ฏ: GDP ์ฑ์ฅ๊ณผ ํ์ ์ง์ถ ๊ฐ์ ๊ด๊ณ๋ฅผ ๋๋ฅ๋ณ(col='Continent')๋ก ํจ์ฏํ๊ณ ๊ฒฝ์ ์์คํ ์ ํ๋ณ(hue='Economic_System')๋ก ์์์ ๊ตฌ๋ถํ์ฌ ์๊ฐํํฉ๋๋ค. ์ด๋ ์ฌ๋ฌ ๊ธ๋ก๋ฒ ๋ถ๋ฌธ์์ ๊ด๊ณ๊ฐ ์ด๋ป๊ฒ ๋ค๋ฅธ์ง ๋ณด์ฌ์ค๋๋ค.order๋งค๊ฐ๋ณ์: ์ ํ ๋ชจ๋ธ ๋์ ๋คํญ ํ๊ท ๋ชจ๋ธ์ ํผํ ํฉ๋๋ค(์: 2์ฐจ ํผํ ์ ์ํorder=2). ์ด๋ ๊ด๊ณ๊ฐ ์๊ฒฉํ๊ฒ ์ ํ์ด ์๋ ๋ ์ ์ฉํฉ๋๋ค. ์๋ฅผ ๋ค์ด, ํน์ ์๋ฆฌํ์ ์งํ์ ๋ํ ์ฐ๋ น์ ์ํฅ๊ณผ ๊ฐ์ต๋๋ค.logistic=True๋ฐrobust=True: ๋ก์ง์คํฑ ํ๊ท ๋ชจ๋ธ(์ด์ง ๊ฒฐ๊ณผ์ฉ) ๋๋ ๋ก๋ฒ์คํธ ํ๊ท ๋ชจ๋ธ(์ด์์น์ ๋ ๋ฏผ๊ฐํจ)์ ๊ฐ๊ฐ ํผํ ํฉ๋๋ค. ์ด๋ ์๋ฅผ ๋ค์ด ์๋์ ๊ธฐ๋ฐํ ์ ๊ธฐ์ ์ฑํ ํ๋ฅ ์ ๋ถ์ํ๊ฑฐ๋, ํน์ดํ ์ฌ๊ฑด์ด ์๋ ์ํฉ์์ ์ ์ฑ ๋ณ๊ฒฝ์ ์ํฅ์ ๊ฐ๊ฑดํ๊ฒ ์ถ์ ํ๋ ๋ฐ ์ค์ํฉ๋๋ค.- ํ๊ท์ ๋ฐ ์ฐ์ ๋ ์ฌ์ฉ์ ์ ์:
scatter_kws๋ฐline_kws์ ์ฌ์ ์ ์ ๋ฌํ์ฌ ์ฐ์ ๋์ ํ๊ท์ ์ ํน์ Matplotlib ์์ฑ(์: ์์, ๋ง์ปค, ํฌ๋ช ๋, ์ ์คํ์ผ)์ ์ ์ดํฉ๋๋ค.
2. seaborn.regplot์ผ๋ก ์ธ๋ฐํ ์ ์ด
Matplotlib ์ถ์ ๋ํ ๋ ๋ง์ ์ ์ด๊ฐ ํ์ํ๊ฑฐ๋ ๊ธฐ์กด ์ถ์ ํ๊ท ํ๋กฏ์ ๊ฒน์ณ ๊ทธ๋ฆฌ๊ณ ์ถ์ ๋, regplot์ด ์ ํฉํ ํจ์์
๋๋ค.
lmplot๊ณผ ๋ง์ ๋งค๊ฐ๋ณ์(order,logistic,robust,scatter_kws,line_kws)๋ฅผ ๊ณต์ ํ์ง๋ง ๋จ์ผ ์ถ ์ธํธ์์ ์๋ํ๋ฏ๋ก ๋ค์ธต ํ๋กฏ์ ์ ๋ฐํ๊ฒ ํตํฉํ ์ ์์ต๋๋ค.- ๋ณต์กํ Matplotlib ๊ทธ๋ฆผ์ ๋จ์ผ ํจ๋์ ํ๊ท์ ๊ณผ ์ ๋ขฐ ๊ตฌ๊ฐ์ ์ถ๊ฐํ๋ ๋ฐ ์ด์์ ์ ๋๋ค.
๋ค์ค ํจ๋ ๋ฐ ํจ์ฏ ๊ทธ๋ฆฌ๋: ๋ณต์กํ ๋ฐ์ดํฐ ๊ตฌ์กฐ ํด์
๊ณ ๊ธ ์๊ฐํ๋ฅผ ์ํ Seaborn์ ์ง์ ํ ํ์ ์ข
์ข
๊ทธ๋ฆฌ๋ ํ๋กํ
์ ํธ๋ฆฌํฐ์ธ FacetGrid, JointGrid, PairGrid์ ์์ต๋๋ค. ์ด ํด๋์ค๋ค์ ๋ณต์กํ ๋ค์ค ํจ๋ ๊ทธ๋ฆผ์ ์์ฑํ๊ธฐ ์ํ ํ๋ก๊ทธ๋๋ฐ ๋ฐฉ์์ ์ ์ด๋ฅผ ์ ๊ณตํฉ๋๋ค.
1. seaborn.FacetGrid: Figure ์์ค ํ๋กฏ์ ๊ธฐ์ด
FacetGrid๋ ๋ฐ์ดํฐ์
์ ์ค์ฌ์ผ๋ก ํ๋กฏ์ ๊ตฌ์ฑํ๋ ์ผ๋ฐ์ ์ธ ๋ฐฉ๋ฒ์
๋๋ค. relplot๊ณผ catplot์ ๋ณธ์ง์ ์ผ๋ก FacetGrid์ ๋ํ ๊ณ ์์ค ์ธํฐํ์ด์ค์
๋๋ค. FacetGrid๋ฅผ ์ง์ ์ฌ์ฉํ๋ฉด ์ต๋์ ์ ์ฐ์ฑ์ ์ ๊ณตํฉ๋๋ค.
- ์ด๊ธฐํ: ๋ฐ์ดํฐํ๋ ์์ ์ ๋ฌํ๊ณ
col,row,hue์ ๋ํ ๋ฒ์ฃผํ ๋ณ์๋ฅผ ์ง์ ํ์ฌFacetGrid์ธ์คํด์ค๋ฅผ ์์ฑํฉ๋๋ค. .map()๋ฐ.map_dataframe()์ผ๋ก ํ๋กฏ ๋งคํ:.map(plotting_function, *args, **kwargs): ํ๋กํ ํจ์(์:plt.scatter,sns.histplot)๋ฅผ ๊ฐ ํจ์ฏ์ ์ ์ฉํฉ๋๋ค. ์ธ์*args๋ ํ๋กํ ํจ์๊ฐ ์์น ์ธ์๋ก ์์ํ๋ ๋ฐ์ดํฐํ๋ ์์ ๋ณ์(์ด ์ด๋ฆ์ผ๋ก ์ง์ ๋จ)์ ํด๋นํฉ๋๋ค..map_dataframe(plotting_function, *args, **kwargs):.map()๊ณผ ์ ์ฌํ์ง๋ง, ํ๋กํ ํจ์๋ ๊ฐ ํจ์ฏ์ ์ ์ฒด ๋ฐ์ดํฐํ๋ ์ ํ์ ์งํฉ์ ์ฒซ ๋ฒ์งธ ์ธ์๋ก ์์ํ๋ฏ๋ก, ๋ฐ์ดํฐํ๋ ์์์ ์ง์ ์๋ํ๋ ํจ์์ ์ ํฉํฉ๋๋ค. ์ด๋ ํจ์ฏ๋ณ๋ก ๋ ๋ณต์กํ ์ฌ์ฉ์ ์ ์ ํ๋กํ ๋ก์ง์ ์ ์ฉํฉ๋๋ค.
- ๊ทธ๋ฆฌ๋ ์ฌ์ฉ์ ์ ์:
.add_legend():hue๋ณ์์ ๋ํ ๋ฒ๋ก๋ฅผ ์ถ๊ฐํ์ฌ ์์น์ ๋ชจ์์ ์ ๋ฐํ๊ฒ ์ ์ดํ ์ ์์ต๋๋ค..set_axis_labels(x_label, y_label),.set_titles(col_template, row_template): ํนํ ๊ตญ์ ๋ณด๊ณ ์์์ ๊ฐ๋ ์ฑ์ ๋์ด๊ธฐ ์ํด ๋ ์ด๋ธ๊ณผ ์ ๋ชฉ์ ์ฌ์ฉ์ ์ ์ํฉ๋๋ค..set(xticks, yticks, xlim, ylim): ๋ชจ๋ ํจ์ฏ์ ์ผ๊ด๋ ์ถ ์ ํ์ด๋ ํฑ ๋งํฌ๋ฅผ ์ ์ฉํ์ฌ ๊ณต์ ํ ๋น๊ต๋ฅผ ์ํด ์ค์ํฉ๋๋ค.
2. seaborn.JointGrid: ์ด๋ณ๋ ๋ฐ ์ฃผ๋ณ ๋ถํฌ ์กฐ๋ช
JointGrid๋ ๋ ๋ณ์์ ๊ฒฐํฉ ๋ถํฌ์ ๊ฐ๋ณ ์ฃผ๋ณ ๋ถํฌ๋ฅผ ํจ๊ป ์๊ฐํํ๋๋ก ์ค๊ณ๋์์ต๋๋ค. ์ด๋ ๋ ์ฐ์ ๋ณ์๊ฐ ์ด๋ป๊ฒ ์ํธ ์์ฉํ๊ณ ๊ฐ ๋ณ์๊ฐ ๋
๋ฆฝ์ ์ผ๋ก ์ด๋ป๊ฒ ํ๋ํ๋์ง ์ดํดํ๋ ๋ฐ ๋งค์ฐ ์ ์ฉํฉ๋๋ค.
- ์ด๊ธฐํ: ๋ฐ์ดํฐํ๋ ์๊ณผ ๋ ๋ณ์(
x,y)๋ฅผ ์ ๋ฌํ์ฌJointGrid์ธ์คํด์ค๋ฅผ ์์ฑํฉ๋๋ค. - ํ๋กฏ ๋งคํ:
.plot_joint(plotting_function, **kwargs): ์ค์ ๊ฒฐํฉ ์ถ์ ํ๋กฏํฉ๋๋ค(์:sns.scatterplot,sns.kdeplot,sns.regplot)..plot_marginals(plotting_function, **kwargs): ์ฃผ๋ณ ์ถ์ ํ๋กฏํฉ๋๋ค(์:sns.histplot,sns.kdeplot).
- ๊ณ ๊ธ ๊ตฌ์ฑ:
.ax_joint.set_xlabel(),.ax_marg_x.set_ylabel(): ๊ธฐ๋ณธ Matplotlib ์ถ ๊ฐ์ฒด์ ์ง์ ์ ๊ทผํ์ฌ ๋ ์ด๋ธ, ์ ํ ๋ฐ ๊ธฐํ ์์ฑ์ ์ธ๋ฐํ๊ฒ ์ ์ดํฉ๋๋ค..plot_joint(sns.regplot, ...)์ผ๋ก ํ๊ท์ ์ ์ถ๊ฐํ๊ณ ์ด๋ฅผ ์ฐ์ ๋๋ KDE์ ๊ฒฐํฉํ์ฌ ๊ฐ๋ ฅํ ๊ฐ์๋ฅผ ์ ๊ณตํฉ๋๋ค.
3. seaborn.PairGrid: ๋ชจ๋ ์๋ณ ๊ด๊ณ ํ์
PairGrid๋ ๋ฐ์ดํฐ์
์ ๋ชจ๋ ๋ณ์ ์ ์กฐํฉ์ ๋ํ ํ๋กฏ ๊ทธ๋ฆฌ๋๋ฅผ ์์ฑํฉ๋๋ค. ์ด๋ ๋ค๋ณ๋ ๋ฐ์ดํฐ์
์ ์ด๊ธฐ ํ์์ ๋ฐ์ดํฐ ๋ถ์(EDA)์ ์ํ ๊ถ๊ทน์ ์ธ ๋๊ตฌ์ด๋ฉฐ, ํนํ ๋ค์ํ ๊ธ๋ก๋ฒ ์งํ๋ฅผ ๋ค๋ฃฐ ๋ ๊ด๋ จ์ฑ์ด ๋์ต๋๋ค.
- ์ด๊ธฐํ: ๋ฐ์ดํฐํ๋ ์์ผ๋ก
PairGrid์ธ์คํด์ค๋ฅผ ์์ฑํฉ๋๋ค.vars๋ฅผ ์ฌ์ฉํ์ฌ ๋ณ์์ ํ์ ์งํฉ์ ์ง์ ํ๊ฑฐ๋,hue๋ฅผ ์ฌ์ฉํ์ฌ ๋ฒ์ฃผํ ๋ณ์๋ณ๋ก ๊ด์ธก์น๋ฅผ ์์์ผ๋ก ๊ตฌ๋ถํ ์ ์์ต๋๋ค. - ํ๋กฏ ๋งคํ:
.map_diag(plotting_function, **kwargs): ํ๋กํ ํจ์๋ฅผ ๋๊ฐ์ ์๋ธํ๋กฏ์ ๋งคํํฉ๋๋ค(์: ๋จ๋ณ๋ ๋ถํฌ๋ฅผ ๋ณด์ฌ์ฃผ๋sns.histplot๋๋sns.kdeplot)..map_offdiag(plotting_function, **kwargs): ํ๋กํ ํจ์๋ฅผ ๋น๋๊ฐ์ ์๋ธํ๋กฏ์ ๋งคํํฉ๋๋ค(์: ์ด๋ณ๋ ๊ด๊ณ๋ฅผ ๋ณด์ฌ์ฃผ๋plt.scatter๋๋sns.kdeplot).
PairGrid๋ ๋๊ฐ์ ์ ํ์คํ ๊ทธ๋จ์, ๋น๋๊ฐ์ ์ ์ฐ์ ๋๋ฅผ ์ฌ์ฉํ์ฌ ๋ชจ๋ ์๋ณ ๊ด๊ณ๋ฅผ ์ ์ํ๊ฒ ๋ณด์ฌ์ฃผ์ด ์๊ด ๊ด๊ณ์ ํจํด์ ๋น ๋ฅด๊ฒ ์๋ณํ ์ ์์ต๋๋ค. - ๋น๋์นญ ๋งคํ:
.map_upper()์.map_lower()๋ฅผ ์ฌ์ฉํ์ฌ ๋น๋๊ฐ์ ํ๋กฏ์ ์๋จ ์ผ๊ฐํ๊ณผ ํ๋จ ์ผ๊ฐํ์ ๋ค๋ฅธ ํจ์๋ฅผ ๋งคํํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด, ํ๋จ ์ผ๊ฐํ์๋ ์ฐ์ ๋๋ฅผ, ์๋จ ์ผ๊ฐํ์๋ ํ๊ท์ ์ด ์๋ ์ปค๋ ๋ฐ๋ ์ถ์ ์น๋ฅผ ์ฌ์ฉํ์ฌ ๊ฐ ๊ด๊ณ์ ๋ํ ๋ ํ๋ถํ ๋ทฐ๋ฅผ ์ ๊ณตํ ์ ์์ต๋๋ค. hue๋ฒ๋ก ์ถ๊ฐ:.add_legend()๋ฅผ ์ฌ์ฉํ์ฌ ์ฌ๋ฌ ๋ฒ์ฃผ(์: ๋๋ฅ)๊ฐ ๋ชจ๋ ํ๋กฏ์ ์ด๋ป๊ฒ ํํ๋๋์ง ๋ณด์ฌ์ค๋๋ค.
๊ธ๋ก๋ฒ ๋ช ํ์ฑ์ ์ํ ๋ฏธํ๊ณผ ํ ๋ง ์ฌ์ฉ์ ์ ์
์๊ฐํ๋ฅผ ํตํ ํจ๊ณผ์ ์ธ ์ปค๋ฎค๋์ผ์ด์ ์ ๋ฏธํ์ ํฌ๊ฒ ์์กดํฉ๋๋ค. Seaborn์ ํ๋กฏ์ ๋ชจ์์ ์กฐ์ ํ๋ ๊ฐ๋ ฅํ ๋๊ตฌ๋ฅผ ์ ๊ณตํ์ฌ ๋ช ํํ๊ณ ์ ๋ฌธ์ ์ด๋ฉฐ ์ ์ธ๊ณ ์ฌ์ฉ์๊ฐ ์ ๊ทผํ ์ ์๋๋ก ๋ณด์ฅํฉ๋๋ค.
1. ๊ณ ๊ธ ์์ ํ๋ ํธ ๊ด๋ฆฌ
์ฌ๋ฐ๋ฅธ ์์์ ์ ํํ๋ ๊ฒ์ ํธ๊ฒฌ์ด๋ ์คํด๋ฅผ ์ ๋ฐํ์ง ์๊ณ ์๋ฏธ๋ฅผ ์ ๋ฌํ๋ ๋ฐ ์ค์ํฉ๋๋ค.
- ์ง๊ฐ์ ์ผ๋ก ๊ท ์ผํ ํ๋ ํธ:
sns.color_palette()์ ํ๋ ํธ, ํนํ ์ฐ์ ๋ฐ์ดํฐ์ ๋ํด'viridis','plasma','magma','cividis'๋ฅผ ์ฌ์ฉํ์ญ์์ค. ์ด๋ค์ ์ง๊ฐ์ ์ผ๋ก ๊ท ์ผํ๋๋ก(์์ ๋ณํ๊ฐ ๋ฐ์ดํฐ์ ๋์ผํ ๋ณํ๋ฅผ ๋ฐ์) ์ค๊ณ๋์์ผ๋ฉฐ ์ข ์ข ์๋งน ์นํ์ ์ ๋๋ค. - ์ฌ์ฉ์ ์ ์ ํ๋ ํธ: ํน์ ๋ธ๋๋ฉ ๋๋ ๋ฐ์ดํฐ ์๊ตฌ ์ฌํญ์ ๋ง๊ฒ
sns.color_palette(['color1', 'color2', ...])๋ฅผ ์ฌ์ฉํ์ฌ ์์ ๋ง์ ํ๋ ํธ๋ฅผ ๋ง๋์ญ์์ค. ๋ํ ์์ฐจ์ (sns.light_palette,sns.dark_palette) ๋๋ ๋ฐ์ฐ(sns.diverging_palette) ํ๋ ํธ๋ฅผ ํ๋ก๊ทธ๋๋ฐ ๋ฐฉ์์ผ๋ก ์์ฑํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด, ํ์ฌ์ ๊ตญ์ ๋ธ๋๋ฉ ๊ฐ์ด๋๋ผ์ธ๊ณผ ์ผ์นํ๋ ํ๋ ํธ๋ฅผ ๋์์ธํ ์ ์์ต๋๋ค. - ๊ด๋ จ ๋ฒ์ฃผ๋ฅผ ์ํ ์์ ์ด๋ฃจ๋ ํ๋ ํธ: Seaborn์ ํตํด ์ ๊ทผํ ์ ์๋
'Paired'๋๋'Set2'Matplotlib ํ๋ ํธ๋ ์ผ๋ถ ๋ฒ์ฃผ๊ฐ ๊ด๋ จ ์๋ ๋ฒ์ฃผํ ๋ฐ์ดํฐ์ ์ ํฉํฉ๋๋ค. - ์๋ฏธ๋ก ์ ์์ ์ฌ์ฉ: ์ง๊ด์ ์ธ ๋ฐฉ์์ผ๋ก ๋ณ์์ ์์์ ๋งคํํ์ญ์์ค. ์๋ฅผ ๋ค์ด, ๊ฒฝ์ ์ฑ์ฅ์๋ ๋ฐ๋ปํ ํ๋ ํธ๋ฅผ, ํ๊ฒฝ ์ ํด์๋ ์ฐจ๊ฐ์ด ํ๋ ํธ๋ฅผ ์ฌ์ฉํฉ๋๋ค. ๊ธ์ /๋ถ์ ์ ๋นจ๊ฐ/์ด๋ก์ ์ฌ์ฉํ๋ ๊ฒ์ ๋งฅ๋ฝ์์ ๋ณดํธ์ ์ผ๋ก ์ดํด๋์ง ์๋ ํ ํผํ์ญ์์ค(์: ์ํ์ ๋ํ ๋นจ๊ฐ์ ๋๋ฆฌ ๋ฐ์๋ค์ฌ์ง).
2. ํ ๋ง ๋ฐ ์คํ์ผ ๋ฏธ์ธ ์กฐ์
Seaborn์ ์คํ์ผ๋ง ํจ์๋ ํ๋กฏ ๋ฏธํ์ ๋ํ ๊ณ ์์ค ์ ์ด๋ฅผ ์ ๊ณตํฉ๋๋ค.
sns.set_theme(): ์ ๋ฐ์ ์ธ ๋ฏธํ์ ์ค์ ํ๋ ๊ฐ์ฅ ํฌ๊ด์ ์ธ ๋ฐฉ๋ฒ์ ๋๋ค. ์คํ์ผ(์:'whitegrid'), ์ปจํ ์คํธ(์: ํ๋ ์ ํ ์ด์ ์ฉ'talk'), ํ๋ ํธ๋ฅผ ๊ฒฐํฉํ ์ ์์ต๋๋ค.sns.set_style()๋ฐsns.set_context(): ๋ฐฐ๊ฒฝ ์คํ์ผ(์:'darkgrid','white','ticks')๊ณผ ํ๋กํ ์ปจํ ์คํธ('paper','notebook','talk','poster')๋ฅผ ๊ฐ๋ณ์ ์ผ๋ก ์ ์ดํ์ฌ ๋ค์ํ ์ถ๋ ฅ ๋งค์ฒด์ ๋ง๊ฒ ์์๋ฅผ ์ ์ ํ๊ฒ ํ์ฅํฉ๋๋ค.- RC ๋งค๊ฐ๋ณ์ ์ฌ์ฉ์ ์ ์: ๊ถ๊ทน์ ์ธ ์ ์ด๋ฅผ ์ํด Seaborn์ ํ
๋ง ์ค์ ์ Matplotlib์ rcParams๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํฉ๋๋ค. ํน์ rcParams๋ฅผ ์ง์ ์ฌ์ ์ํ๊ฑฐ๋(์:
plt.rcParams['font.size'] = 12)sns.set_theme(rc={'figure.figsize': (10, 6), 'axes.labelsize': 14})์ ์ฌ์ ์ ์ ๋ฌํ ์ ์์ต๋๋ค. ์ด๋ ์ฌ๋ฌ ์ง์ญ์ด๋ ์ถํ ํ์ค์ ๊ฑธ์ณ ์ผ๊ด๋ ๊ธ๊ผด ํฌ๊ธฐ์ ๊ทธ๋ฆผ ํฌ๊ธฐ๋ฅผ ๋ณด์ฅํ๋ ๋ฐ ๋งค์ฐ ์ค์ํฉ๋๋ค.
3. ์ฃผ์, ์ค๋ฒ๋ ์ด ๋ฐ ํ ์คํธ ์ถ๊ฐ
ํ๋กฏ์ ์ง์ ์ปจํ ์คํธ๋ฅผ ์ถ๊ฐํ๋ฉด ๋ชจ๋ ์ฌ์ฉ์์ ์ดํด๋ฅผ ํฅ์์ํฌ ์ ์์ต๋๋ค.
- Matplotlib ํตํฉ: Seaborn ํ๋กฏ์ Matplotlib ์ถ์ด๋ฏ๋ก, Matplotlib ํจ์๋ฅผ ์ฌ์ฉํ์ฌ ์ฌ์ฉ์ ์ ์ ์์๋ฅผ ์ถ๊ฐํ ์ ์์ต๋๋ค:
ax.text(x, y, 'label', ...): ํน์ ์ขํ์ ์์์ ํ ์คํธ๋ฅผ ์ถ๊ฐํฉ๋๋ค.ax.annotate('text', xy=(x, y), xytext=(x_offset, y_offset), arrowprops=dict(facecolor='black', shrink=0.05)): ํ ์คํธ์ ํ์ดํ๋ก ํน์ ํฌ์ธํธ๋ฅผ ์ฃผ์ ์ฒ๋ฆฌํ์ฌ ๊ธ๋ก๋ฒ ๋น๊ต์์ ์ด์์น๋ ์ฃผ์ ๋ฐ์ดํฐ ํฌ์ธํธ์ ์ฃผ์๋ฅผ ํ๊ธฐ์ํต๋๋ค.ax.axvline(x=value, color='red', linestyle='--')๋ฐax.axhline(y=value, color='green', linestyle=':'): ๊ธ๋ก๋ฒ ํ๊ท , ์ ์ฑ ์๊ณ๊ฐ ๋๋ ์ญ์ฌ์ ๋ฒค์น๋งํฌ์ ๊ฐ์ ์์ง ๋๋ ์ํ ์ฐธ์กฐ์ ์ ์ถ๊ฐํฉ๋๋ค.ax.fill_between(x, y1, y2, color='blue', alpha=0.2): ๊ณก์ ์ฌ์ด์ ์์ญ์ ์ฑ์ ๋ถํ์ค์ฑ ๋ฒ์๋ฅผ ๊ฐ์กฐํ๊ฑฐ๋ ๋ ๋ฐ์ดํฐ์ ๊ฐ์ ์์ญ์ ๋น๊ตํ๋ ๋ฐ ์ ์ฉํฉ๋๋ค.- ์ฌ์ฉ์ ์ ์ ๋ฒ๋ก:
.add_legend()๋๋legend='full'์ธ์๋, Matplotlib์plt.legend()๋ ๋ฒ๋ก ํญ๋ชฉ, ๋ ์ด๋ธ ๋ฐ ๋ฐฐ์น์ ๋ํ ์์ ํ ์๋ ์ ์ด๋ฅผ ํ์ฉํ๋ฉฐ, ์ด๋ ๋ง์ ๊ณ ์ ํ ์์๊ฐ ์๋ ๋ณต์กํ ํ๋กฏ์ ํ์์ ์ ๋๋ค.
Matplotlib์์ ์ํํ ์ํธ ์์ฉ: ๋ ์ธ๊ณ์ ์ฅ์ ๊ฒฐํฉ
Seaborn์ด Matplotlib์ ๊ธฐ๋ฐ์ผ๋ก ๊ตฌ์ถ๋์๋ค๋ ์ ์ ๊ธฐ์ตํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค. ์ด๋ ํญ์ Matplotlib์ ๊ด๋ฒ์ํ ์ฌ์ฉ์ ์ ์ ๊ธฐ๋ฅ์ ํ์ฉํ์ฌ Seaborn ํ๋กฏ์ ๋ฏธ์ธ ์กฐ์ ํ ์ ์์์ ์๋ฏธํฉ๋๋ค.
- Figure ๋ฐ Axes ์ ๊ทผ:
Axes๊ฐ์ฒด(Axes ์์ค ํจ์) ๋๋FacetGrid/JointGrid/PairGrid๊ฐ์ฒด(Figure ์์ค ํจ์)๋ฅผ ๋ฐํํ๋ Seaborn ํจ์๋ฅผ ์ฌ์ฉํ๋ฉด ๊ธฐ๋ณธ Matplotlib ๊ตฌ์ฑ ์์์ ์ ๊ทผํ ์ ์์ต๋๋ค. - Axes ์์ค ํ๋กฏ์ ๊ฒฝ์ฐ:
ax = sns.scatterplot(...). ๊ทธ๋ฐ ๋ค์ax.set_title(),ax.set_xlabel(),ax.tick_params()๋ฑ์ ์ฌ์ฉํ ์ ์์ต๋๋ค. - Figure ์์ค ํ๋กฏ์ ๊ฒฝ์ฐ:
g = sns.relplot(...). ๊ทธ๋ฐ ๋ค์ ์ ์ฒด ์ ๋ชฉ์ ์ํดg.fig.suptitle()์ ์ฌ์ฉํ๊ฑฐ๋,g.axes.flat์ ๋ฐ๋ณตํ์ฌ ๊ฐ๋ณ ์๋ธํ๋กฏ์ ์ฌ์ฉ์ ์ ์ํ ์ ์์ต๋๋ค.JointGrid์ ๊ฒฝ์ฐg.ax_joint,g.ax_marg_x,g.ax_marg_y๊ฐ ์์ต๋๋ค. - ์ด๋ฌํ ์ํธ ์ด์ฉ์ฑ์ Seaborn์ ๊ณ ์์ค ์ถ์ํ์ ์ํด ๊ฒฐ์ฝ ์ ํ๋์ง ์์ผ๋ฉฐ ๊ธ๋ก๋ฒ ํต์ฐฐ๋ ฅ์ ์ํด ํ์ํ ํน์ ์๊ฐ์ ๋์์ธ์ ๋ฌ์ฑํ ์ ์๋๋ก ๋ณด์ฅํฉ๋๋ค.
์ค์ ๊ธ๋ก๋ฒ ์์ (๊ฐ๋ ์ ์ ์ฉ)
๊ณ ๊ธ Seaborn์ ํ์ ์ค๋ช ํ๊ธฐ ์ํด ๋ค์ํ ๊ตญ์ ์ ๋งฅ๋ฝ์์ ๊ณต๊ฐํ ์ ์๋ ๋ช ๊ฐ์ง ๊ฐ๋ ์ ์์ ๋ฅผ ๊ณ ๋ คํด ๋ณด๊ฒ ์ต๋๋ค:
- ๊ธ๋ก๋ฒ ๊ฒฝ์ ๊ฒฉ์ฐจ:
relplot(kind='scatter', x='GDP_Per_Capita', y='Life_Expectancy', hue='Continent', size='Population', col='Development_Status', col_wrap=2)๋ฅผ ์ฌ์ฉํ์ฌ 1์ธ๋น GDP์ ๊ธฐ๋ ์๋ช ๊ฐ์ ๊ด๊ณ๋ฅผ ์๊ฐํํฉ๋๋ค. ์ด๋ฅผ ํตํด ๋๋ฅ ๋ฐ ๊ฐ๋ฐ ์ํ์ ๊ฑธ์น ์ถ์ธ๋ฅผ ๋์์ ๋น๊ตํ ์ ์์ผ๋ฉฐ, ์ธ๊ตฌ ํฌ๊ธฐ๋ ๋ง์ปค ํฌ๊ธฐ๋ก ํ์๋ฉ๋๋ค.
- ๊ตญ์ ๊ณต์ค ๋ณด๊ฑด ๋ํฅ:
- ์ฌ๋ฌ ์ฐ๋ น ๊ทธ๋ฃน์ ๊ฑธ์น ํน์ ์ง๋ณ ์ ๋ณ๋ฅ ๋ถํฌ๋ฅผ ๊ตญ๊ฐ ์๋ ์์ค๋ณ๋ก ํจ์ฏํ์ฌ ํ์ํฉ๋๋ค.
catplot(kind='violin', x='Age_Group', y='Disease_Prevalence', col='Income_Level', hue='Gender', inner='box')๋ฅผ ์ฌ์ฉํฉ๋๋ค. ์ด๋ ์ง๋ณ ์ ๋ณ๋ฅ ๋ถํฌ๊ฐ ์ฐ๋ น, ์ฑ๋ณ ๋ฐ ๊ฒฝ์ ์ ๋งฅ๋ฝ์ ๋ฐ๋ผ ์ด๋ป๊ฒ ๋ค๋ฅธ์ง ๋ณด์ฌ์ค๋๋ค.
- ์ฌ๋ฌ ์ฐ๋ น ๊ทธ๋ฃน์ ๊ฑธ์น ํน์ ์ง๋ณ ์ ๋ณ๋ฅ ๋ถํฌ๋ฅผ ๊ตญ๊ฐ ์๋ ์์ค๋ณ๋ก ํจ์ฏํ์ฌ ํ์ํฉ๋๋ค.
- ๋น๊ต ๊ต์ก ์ฑ๊ณผ:
- ์ฌ๋ฌ ๊ต์ก ์์คํ
์ ๊ฑธ์ณ ๊ต์ก ์ง์ถ๊ณผ ํ์ ์ํ ์ ์ ๊ฐ์ ๊ด๊ณ๋ฅผ ๋ถ์ํฉ๋๋ค.
lmplot(x='Education_Spending_Pct_GDP', y='Avg_Test_Score', hue='Region', col='Education_System_Type', order=2)๋ฅผ ์ฌ์ฉํ์ฌ ์ ์ฌ์ ์ธ ๋น์ ํ ๊ด๊ณ๋ฅผ ๊ณ ๋ คํ๊ณ ์ง์ญ ๋ฐ ์์คํ ์ ํ๋ณ๋ก ๋น๊ตํ๋ ๋คํญ ํ๊ท๋ฅผ ํผํ ํฉ๋๋ค.
- ์ฌ๋ฌ ๊ต์ก ์์คํ
์ ๊ฑธ์ณ ๊ต์ก ์ง์ถ๊ณผ ํ์ ์ํ ์ ์ ๊ฐ์ ๊ด๊ณ๋ฅผ ๋ถ์ํฉ๋๋ค.
- ํ๊ฒฝ ์ํฅ ๋ถ์:
PairGrid๋ฅผ ์ฌ์ฉํ์ฌ ํ์ ๋ฐฐ์ถ๋, ์ฌ์ ์๋์ง ์ฑํ, ์ผ๋ฆผ ๋ฒ์ฑ์จ, ํ๊ท ๊ธฐ์จ ๋ณํ ๊ฐ์ ์๋ณ ๊ด๊ณ๋ฅผ ์๊ฐํํ๊ณ , ๊ตญ๊ฐ๋ฅผ ๊ธฐํ๋์ ๋ฐ๋ผ ์์์ผ๋ก ๊ตฌ๋ถํฉ๋๋ค. ์ด๋ ์ ์ธ๊ณ์ ์ผ๋ก ์ฝํ ํ๊ฒฝ ์์ธ์ ๋ํ ํฌ๊ด์ ์ธ ๊ฐ์๋ฅผ ์ ๊ณตํฉ๋๋ค. ๋๊ฐ์ ์๋sns.kdeplot(fill=True)์, ๋น๋๊ฐ์ ์๋sns.scatterplot()์ ๋งคํํฉ๋๋ค.
๊ณ ๊ธ ํต๊ณ ์๊ฐํ๋ฅผ ์ํ ๋ชจ๋ฒ ์ฌ๋ก (๊ธ๋ก๋ฒ ๊ด์ )
์ ๊ตํ ์๊ฐํ๋ฅผ ์ ์ํ๋ ค๋ฉด ํนํ ์ ์ธ๊ณ ์ฌ์ฉ์๋ฅผ ๋์์ผ๋ก ํ ๋ ๋ชจ๋ฒ ์ฌ๋ก๋ฅผ ์ค์ํด์ผ ํฉ๋๋ค.
- ๋ช ํ์ฑ๊ณผ ๋จ์์ฑ: ๊ณ ๊ธ ํ๋กฏ์ด๋ผ๋ ๋ช ํ์ฑ์ ๋ชฉํ๋ก ํด์ผ ํฉ๋๋ค. ๋ถํ์ํ ์ฅ์์ ํผํ์ญ์์ค. ๋ชฉํ๋ ๋ณต์ก์ฑ์ผ๋ก ๊ฐ๋์ํค๋ ๊ฒ์ด ์๋๋ผ ์ ๋ณด๋ฅผ ์ ๊ณตํ๋ ๊ฒ์ ๋๋ค. ๋ ์ด๋ธ์ด ๋ช ํํ๊ณ ๊ฐ๊ฒฐํ์ง ํ์ธํ๊ณ , ๋ณดํธ์ ์ผ๋ก ์ดํด๋๋ ๊ฒฝ์ฐ ์ฝ์ด๋ฅผ ๊ณ ๋ คํ์ญ์์ค.
- ์ฌ๋ฐ๋ฅธ ํ๋กฏ ์ ํ: ๊ฐ ํ๋กฏ ์ ํ์ ๊ฐ์ ๊ณผ ์ฝ์ ์ ์ดํดํ์ญ์์ค. ๋ฐ์ด์ฌ๋ฆฐ ํ๋กฏ์ ๋ถํฌ๋ฅผ ๋ณด์ฌ์ฃผ๋ ๋ฐ ํ๋ฅญํ ์ ์์ง๋ง, ๋จ์ํ ํฌ๊ธฐ ๋น๊ต์๋ ๋ง๋ ํ๋กฏ์ด ๋ ์ข์ต๋๋ค. ๊ธ๋ก๋ฒ ๋ฐ์ดํฐ์ ๊ฒฝ์ฐ ์๊ฐ์ ์์์ ๋ฌธํ์ ๋งฅ๋ฝ์ ๊ณ ๋ คํ์ญ์์ค. ๋๋ก๋ ๋ณดํธ์ ์ธ ์ดํด๋ฅผ ์ํด ๋ ๋จ์ํ ๊ฒ์ด ๋ ์ข์ต๋๋ค.
- ์ค๋ฆฌ์ ์๊ฐํ: ์๊ฐํ๊ฐ ์ด๋ป๊ฒ ํด์๋ ์ ์๋์ง ์ ์ํ์ญ์์ค. ์คํด์ ์์ง๊ฐ ์๋ ์ถ์ฒ, ํธํฅ๋ ์์ ์ ํ ๋๋ ์ ํ์ ์ธ ๋ฐ์ดํฐ ํ์๋ฅผ ํผํ์ญ์์ค. ํฌ๋ช ์ฑ๊ณผ ์ ํ์ฑ์ ํนํ ๋ฏผ๊ฐํ ๊ธ๋ก๋ฒ ๋ฌธ์ ๋ฅผ ๋ค๋ฃฐ ๋ ๊ฐ์ฅ ์ค์ํฉ๋๋ค. ๋ถํ์ค์ฑ์ ๋ณด์ฌ์ฃผ๊ธฐ ์ํด ๊ด๋ จ ์๋ ๊ฒฝ์ฐ ์ ๋ขฐ ๊ตฌ๊ฐ์ ๋ช ํํ๊ฒ ํ์ํ์ญ์์ค.
- ์ ๊ทผ์ฑ: ์๋งน ์นํ์ ์ธ ํ๋ ํธ(์: Viridis, Plasma, Cividis)๋ฅผ ๊ณ ๋ คํ์ญ์์ค. ํ ์คํธ๊ฐ ๋ฐฐ๊ฒฝ์ ๋ํด ์ฝ๊ธฐ ์ฌ์ด์ง ํ์ธํ์ญ์์ค. ์ ์ธ๊ณ์ ์ผ๋ก ์๋น๋ ์ ์๋ ๋ณด๊ณ ์์ ๊ฒฝ์ฐ, ๋๋ก๋ ํ๋ฐฑ ๋๋ ํ์์กฐ ๋ฒ์ ์ด ์ธ์์ ์ ์ฉํฉ๋๋ค.
- ์ํธ ์์ฉ ์์ (Seaborn์ ๋์ด์): Seaborn์ ์ฃผ๋ก ์ ์ ํ๋กฏ์ ์์ฑํ์ง๋ง, ์ด๋ฌํ ๊ณ ๊ธ ์๊ฐํ๋ฅผ ์ํธ ์์ฉ ๋๊ตฌ(์: Plotly, Bokeh)๋ก ๋ณด๊ฐํ์ฌ ์ฌ๋ฌ ์๊ฐ๋์ ๋ค์ํ ๋ฐ์ดํฐ ๋ฆฌํฐ๋ฌ์ ์์ค์ ์ฌ์ฉ์๊ฐ ๋ ๊น์ด ํ์ํ ์ ์๋๋ก ํ๋ ๋ฐฉ๋ฒ์ ๊ณ ๋ คํ์ญ์์ค.
- ๋ฌธ์ํ ๋ฐ ์ปจํ ์คํธ: ํญ์ ํ๋กฏ์ ๋ํ ์ฒ ์ ํ ์ค๋ช ์ ์ ๊ณตํ์ฌ ๊ฐ ์ถ, ์์, ํฌ๊ธฐ ๋๋ ์คํ์ผ์ด ๋ฌด์์ ๋ํ๋ด๋์ง ์ค๋ช ํ์ญ์์ค. ์ด ์ปจํ ์คํธ๋ ํน์ ๋ฐ์ดํฐ์ ์ด๋ ๋๋ฉ์ธ์ ์ต์ํ์ง ์์ ์ ์๋ ๊ตญ์ ์ฌ์ฉ์์๊ฒ ๋งค์ฐ ์ค์ํฉ๋๋ค.
- ๋ฐ๋ณต์ ์ธ ํ๋ก์ธ์ค: ์๊ฐํ๋ ์ข ์ข ๋ฐ๋ณต์ ์ธ ํ๋ก์ธ์ค์ ๋๋ค. ๋ ๊ฐ๋จํ ํ๋กฏ์ผ๋ก ์์ํ์ฌ ํฅ๋ฏธ๋ก์ด ํจํด์ ์๋ณํ ๋ค์, ๊ณ ๊ธ Seaborn ๊ธฐ๋ฅ์ ์ฌ์ฉํ์ฌ ํด๋น ํจํด์ ๋ ์์ธํ ํ์ํ๋ ๋ ๋ณต์กํ ์๊ฐํ๋ฅผ ๊ตฌ์ถํ์ญ์์ค. ๋ค์ํ ์ดํด๊ด๊ณ์๋ก๋ถํฐ ํผ๋๋ฐฑ์ ๋ฐ์ผ์ญ์์ค.
๊ฒฐ๋ก
Seaborn์ ๊ธฐ๋ณธ์ ์ธ ํ๋กํ ์ ํจ์ฌ ๋ฐ์ด๋๋ ํต๊ณ ์๊ฐํ๋ฅผ ์ํ ๋๋๋๋ก ๊ฐ๋ ฅํ๊ณ ์ ์ฐํ ํดํท์ ์ ๊ณตํฉ๋๋ค. ๊ณ ๊ธ ๊ธฐ๋ฅ, ํนํ Figure ์์ค ํจ์, ๊ทธ๋ฆฌ๋ ํ๋กํ ์ ํธ๋ฆฌํฐ ๋ฐ ๊ด๋ฒ์ํ ๋ฏธ์ ์ ์ด๋ฅผ ๋ง์คํฐํ๋ฉด ๋ณต์กํ ๋ค์ฐจ์ ๋ฐ์ดํฐ์ ์์ ๋ ๊น์ ํต์ฐฐ๋ ฅ์ ์ป์ ์ ์์ต๋๋ค. ์ธ๊ณํ๋ ์ธ์์์ ํ๋ํ๋ ๋ฐ์ดํฐ ์ ๋ฌธ๊ฐ์๊ฒ ์ ๊ตํ๊ณ ๋ช ํํ๋ฉฐ ๋ณดํธ์ ์ผ๋ก ์ดํดํ ์ ์๋ ์๊ฐํ๋ฅผ ๋ง๋๋ ๋ฅ๋ ฅ์ ๋จ์ํ ๊ธฐ์ ์ด ์๋๋ผ ํ์์ ๋๋ค. ๊ณ ๊ธ Seaborn์ ํ์ ๋ฐ์๋ค์ฌ ๋ ํ๋ถํ ๋ฐ์ดํฐ ์คํ ๋ฆฌ๋ฅผ ์ ๋ฌํ๊ณ , ๋ ์ ๋ณด์ ์ ๊ฐํ ๊ฒฐ์ ์ ๋ด๋ฆฌ๋ฉฐ, ์ค๋๋ ฅ ์๋ ์๊ฐ์ ๋ด๋ฌํฐ๋ธ๋ก ์ดํด์ ๊ฒฉ์ฐจ๋ฅผ ๋ฉ์ฐ๋ฉด์ ๊ตญ์ ์ ์ธ ์ฒญ์ค์๊ฒ ์ฐ๊ตฌ ๊ฒฐ๊ณผ๋ฅผ ํจ๊ณผ์ ์ผ๋ก ์ ๋ฌํ์ญ์์ค.
๊ณ์ํด์ ์คํํ๊ณ , ํ์ํ๊ณ , ์๊ฐํํ ์ ์๋ ๊ฒ์ ๊ฒฝ๊ณ๋ฅผ ๋ํ๊ฐ์ญ์์ค. Seaborn์ ์ฌ์ฉํ ๊ณ ๊ธ ํ๋กํ ์ผ๋ก์ ์ฌ์ ์ ๋ฐ์ดํฐ ์์ ์จ๊ฒจ์ง ์ง์์ ๋ฐ๊ฒฌํ ๋ฌดํํ ๊ฐ๋ฅ์ฑ์ ์ฝ์ํ๋ ์ง์์ ์ธ ๊ณผ์ ์ ๋๋ค.